1. Field of the Invention
The invention generally relates to the load balancing for multiple virtual machines operating in a clustered computing environment and more specifically relates to systems and methods for generating and utilizing storage system load information in load balancing of the multiple virtual machines as operable on a plurality of physical processors of a cluster such as a so-called “blade center”.
2. Discussion of Related Art
It is generally known in the computing industry to provide a virtual machine environment operating “atop” a physical computing environment. A virtual machine environment, also referred to as a guest operating system, provides a layer of virtualization such that users and/or application programs may operate as though they are utilizing a dedicated physical processor with associated dedicated memory, storage, and I/O peripheral devices all under control of a virtualized operating system (the “guest” operating system). Hence, multiple such virtual machines may be simultaneously (and/or concurrently) operating on a single computing environment such that multiple users and/or application programs may simultaneously/concurrently operate as though each is using a dedicated physical computing environment. Such virtual machine computing technology has been well known in the computing arts for some time including, for example, the IBM MVS (multiple virtual systems) computing environment and including more recent examples such as the VMware family of virtual machine software components.
As noted above, the principle benefit of operating a virtual machine on top of a physical computing environment is to permit multiple such virtual machines to be simultaneously/concurrently operable on a single physical computing environment. Each virtual machine is operable on behalf of a corresponding set of users and/or a corresponding set of application programs. In addition, as clustered computing has evolved such that a plurality of physical processors are tightly coupled in a “cluster”, virtual machine computing techniques have adapted to allow utilization of the plurality of processors in such a cluster. In particular, a plurality of virtual machine computing environments may be concurrently/simultaneously operable and distributed over a plurality of physical processors configured in a clustered computing environment. As used herein, clustered computing should be broadly understood to include not only tightly coupled physical processors communicating through short distance bus structures but also includes more widely distributed network computing where a plurality of processors are logically coupled as a “cluster” utilizing well-known computer network communication protocols and media. In particular, as used herein, a “cluster” includes configuration commonly referred to as a “blade center” in which multiple servers (each including fully operational processor/processors and memory under control of an operating system) are tightly coupled through a shared fabric and/or through a common backplane/mid-plane bus architecture. Thus, a cluster may represent a tightly coupled plurality of physical processors and/or processor/memory complexes in close physical proximity sharing short distance bus structures or fabric connections for inter-process communication and may include a wider physical distribution coupling a plurality of processors utilizing computer networking protocols. Further, as used herein, the “plurality of processors” is intended to refer to a processor/memory complex such as a blade as distinct from a single processor of a blade or complex that has multiple processors on a single blade/complex. In other words, each “processor” of a “plurality of processors” as used herein includes a processor/memory complex generally under the control of a single operating system.
In such a cluster computing environment operating multiple virtual machines, it is generally known to provide a load balancing method and/or component within the clustered environment to permit dynamic distribution and redistribution of the multiple virtual machines (i.e., guest operating systems) over different ones of the plurality of processors. In other words, where one of the physical processors (e.g., one blade or complex) is overloaded with computational requirements and/or memory requirements for multiple virtual machines operating thereon, one or more of the virtual machines operable on the overloaded blade/complex may be redistributed to one or more less heavily loaded physical processors. Thus, the load balancing component or method of the clustered environment identifies is responsible for appropriately distributing or redistributing virtual machine environments to different processors (e.g., different blades or complexes) of the plurality of physical processors in the clustered environment to avoid or alleviate possible overloading of a blade/complex of the cluster.
Present load balancing systems and techniques associated with multiple virtual machines operating in a clustered computing environment account only for load factor information derived from the clustered computing physical processors, per se. In other words, current load balancing systems and techniques may determine that a particular CPU or memory of a physical processor may be computationally overloaded by the operation of multiple virtual machines on the associated physical processor. However, it is generally a problem that such load factor information fails to account for other aspects of loading imposed by virtual machine operation. In particular, present load balancing techniques for multiple virtual machines operating in a clustered computing environment fail to account for load factor information associated with attached storage systems. Frequently, in clustered computing environments, the multiple physical processors share access to a storage system. The storage system may include multiple storage controllers all coupled to a plurality of storage devices for providing I/O request processing on behalf of attached physical processors including, for example, storage management techniques such as RAID storage management. Frequently, multiple virtual machines may not significantly overload the CPU or main memory of any particular physical processor. However, the multiple virtual machines may create a bottleneck for overall performance of the clustered system by sharing common interface structures coupling the physical processor to a particular storage controller of the storage system. Thus, current load balancing techniques are generally incapable of detecting such load balancing bottlenecks and thus are incapable of remediation of such bottlenecks through redistribution of one or more virtual machines to other physical processors.
Is evident from the above discussion that a need exists for improved systems and methods for load balancing of multiple virtual machines operating in a clustered computing environment.